package com.qjdchina.sku.biz;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import com.qjdchina.commons.result.Result;
import com.qjdchina.sku.model.vo.VerifyCodeVo;
public interface VerifyCodeManager {


	/**
	 * 发送验证码
	 * 
	 * @param phone
	 *            用户输入的手机号码
	 * @param tplId
	 *            模板id
	 * @return
	 */
	public Result<VerifyCodeVo> sendVerificationCode(String phone, long tplId);

	/**
	 * 短信验证码校验
	 * 
	 * @param phone
	 *            用户的手机号码
	 * @param input
	 *            用户输入的验证码
	 * @param verifyCodeVo
	 *            session中存放的手机短信验证码对象，包括，验证码发送的时间，手机号，验证码
	 * @return
	 */
	public Result<String> checkInputVerificationCode(String phone,
			String input, VerifyCodeVo verifyCodeVo);
	
	/**
	 * 产生验证码
	 * 
	 * @param verifySize
	 *            数字验证码的位数
	 * @return
	 */
	public Result<VerifyCodeVo> generateCode(int verifySize);

	/**
	 * 生成验证码图片
	 * 
	 * @param w
	 *            宽
	 * @param h
	 *            高
	 * @param os
	 *            流
	 * @param code
	 *            验证码
	 * @throws Exception
	 */
	public void outputImage(int w, int h, OutputStream os, String code)
			throws IOException;

	/**
	 * 校验图片验证码
	 * 
	 * @param verifyCode
	 *            Session中的验证码
	 * @param inputCode
	 *            用户输入的验证码
	 * @param imgDate
	 *            验证码生成的时间
	 * @return
	 */
	public Result<String> checkImgVerificationCode(String verifyCode,
			String inputCode, Date imgDate);
	
	

}

